﻿using Nop.Core.Domain.Media;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Nop.Core;

namespace Nop.Services.Media
{
    public interface IPictureDisplayService
    {
        void InsertPictureLink(PictureLink pictureLink);
        void UpdatePictureLink(PictureLink pictureLink);
        void DeletePictureLink(PictureLink pictureLink);
        PictureLink GetPictureLinkById(int PictureLinkId);

        void InsertSlideshow(Slideshow slideshow);
        void UpdateSlideshow(Slideshow slideshow);
        void DeleteSlideshow(Slideshow slideshow);

        void InsertPictureLinkCollection(PictureLinkCollection pictureLinkCollection);
        void UpdatePictureLinkCollection(PictureLinkCollection pictureLinkCollection);
        void DeletePictureLinkCollection(PictureLinkCollection pictureLinkCollection);
        PictureLinkCollection GetPictureLinkCollectionById(int pictureLinkCollectionId);

        IList<PictureLinkCollection> GetAllPictureLinkCollections();
        IList<PictureLinkCollection> GetAllPictureLinkCollectionsByType(PictureDisplayType type);

        IPagedList<PictureLinkCollection> GetAllPictureLinkCollections(int pageIndex, int pageSize);

        IList<PictureLink> GetPictureLinks(int pictureLinkCollectionId);
        IPagedList<PictureLink> GetPictureLinks(int pictureLinkCollectionId, int pageIndex, int pageSize);
        IList<PictureLink> GetVisiblePictureLinks(int pictureLinkCollectionId);
        IList<PictureLink> GetAllPictureLinks();
        IPagedList<PictureLink> GetAllPictureLinks(int pageIndex, int pageSize);

        Slideshow GetSlideshowById(int slidershowId);
        Slideshow GetSlideshowBySystemName(string systemName);
        IList<Slideshow> GetSlideshowsByType(PictureDisplayType type);
        IList<Slideshow> GetSlideshowsByTypeAndContentCategory(PictureDisplayType? type, string contentCategory, int contentId, bool? enabled = null);
        IList<Slideshow> GetAllSlideshows();

        IList<string> GetAllRelatedContentCategoryNames();
        IList<System.Web.Mvc.SelectListItem> GetRelatedContantSelectListByCategoryName(string categoryName, int selectedContentId = 0);
    }
}
